package com.itheima.project.service.impl;

import com.itheima.project.pojo.ContentRuleDetail;
import com.itheima.project.mapper.ContentRuleDetailMapper;
import com.itheima.project.service.IContentRuleDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import com.itheima.project.vo.content.ContentRuleDetailVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.project.utils.BeanConv;
import com.itheima.project.utils.EmptyUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * @Description：服务实现类
 */
@Service
public class ContentRuleDetailServiceImpl extends ServiceImpl<ContentRuleDetailMapper, ContentRuleDetail> implements IContentRuleDetailService {

    @Override
    public Page<ContentRuleDetail> findContentRuleDetailPage(ContentRuleDetailVo contentRuleDetailVo, int pageNum, int pageSize) {
        //构建分页对象
        Page<ContentRuleDetail> page = new Page<>(pageNum,pageSize);
        //构建查询条件
        QueryWrapper<ContentRuleDetail> queryWrapper = new QueryWrapper<>();
        //构建多条件查询，代码生成后自己可自行调整
        //基础规则ID查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getBaseRuleId())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getBaseRuleId,contentRuleDetailVo.getBaseRuleId());
        }
        //场景，eg:porn查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getScene())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getScene,contentRuleDetailVo.getScene());
        }
        //规则明细，eg：[{'rule':'10<score<20','score':30}]查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getRuleDetail())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getRuleDetail,contentRuleDetailVo.getRuleDetail());
        }
        //备注说明查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getRemark())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getRemark,contentRuleDetailVo.getRemark());
        }
        //状态查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getEnableFlag())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getEnableFlag,contentRuleDetailVo.getEnableFlag());
        }
        //按创建时间降序
        queryWrapper.lambda().orderByDesc(ContentRuleDetail::getCreatedTime);
        //执行分页查询
        return page(page, queryWrapper);
    }

    @Override
    public ContentRuleDetail createContentRuleDetail(ContentRuleDetailVo contentRuleDetailVo) {
        //转换ContentRuleDetailVo为ContentRuleDetail
        ContentRuleDetail contentRuleDetail = BeanConv.toBean(contentRuleDetailVo, ContentRuleDetail.class);
        boolean flag = save(contentRuleDetail);
        if (flag){
        return contentRuleDetail;
        }
        return null;
    }

    @Override
    public Boolean updateContentRuleDetail(ContentRuleDetailVo contentRuleDetailVo) {
        //转换ContentRuleDetailVo为ContentRuleDetail
        ContentRuleDetail contentRuleDetail = BeanConv.toBean(contentRuleDetailVo, ContentRuleDetail.class);
        return updateById(contentRuleDetail);
    }

    @Override
    public Boolean deleteContentRuleDetail(String[] checkedIds) {
        //转换数组为集合
        List<String> ids = Arrays.asList(checkedIds);
        List<Long> idsLong = new ArrayList<>();
        ids.forEach(n->{
            idsLong.add(Long.valueOf(n));
        });
        return removeByIds(idsLong);
    }

    @Override
    public List<ContentRuleDetail> findContentRuleDetailList(ContentRuleDetailVo contentRuleDetailVo) {
        //构建查询条件
        QueryWrapper<ContentRuleDetail> queryWrapper = new QueryWrapper<>();
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getId())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getId,contentRuleDetailVo.getId());
        }
        //基础规则ID查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getBaseRuleId())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getBaseRuleId,contentRuleDetailVo.getBaseRuleId());
        }
        //场景，eg:porn查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getScene())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getScene,contentRuleDetailVo.getScene());
        }
        //规则明细，eg：[{'rule':'10<score<20','score':30}]查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getRuleDetail())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getRuleDetail,contentRuleDetailVo.getRuleDetail());
        }
        //备注说明查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getRemark())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getRemark,contentRuleDetailVo.getRemark());
        }
        //状态查询
        if (!EmptyUtil.isNullOrEmpty(contentRuleDetailVo.getEnableFlag())) {
            queryWrapper.lambda().eq(ContentRuleDetail::getEnableFlag,contentRuleDetailVo.getEnableFlag());
        }
        return list(queryWrapper);
    }
}
